MYSQL de DISTINCT operator
Home

MYSQL de DISTINCT operator

MYSQL de DISTINCT operator

Het SELECT DISTINCT statement wordt gebruikt om alleen de onderscheiden waarden te tonen.

Probleem

In het geval dezelfde waarde in een kolom op verschillende rijenvoorkomt, willen we die waarde slechts één keer tonen.

Oplossing

Soms staan er dubbele waarden in een kolom. Het is normaal dat een tabel met personen dezelfde familienamen of voornamen kan bevatten. dus Dat is geen probleem. Maar soms wil je alleen het aantal verschillende (distinct/onderscheiden) waarden kennen. Het DISTINCT sleutelwoord kan je gebruiken om alleen onderscheiden of verschillende waarden te retourneren. Het opnemen van DISTINCT achter SELECT zorgt ervoor dat de dubbele uitkomsten worden weggelaten.

SELECT DISTINCT column_name(s) FROM table_name

-- KVV
-- 11 december 2012
-- Dit heeft te maken met het Distinct Statement
-- Hierdoor ziet men elke naam maar 1 keer
-- Als men enkel Select zou gebruiken zou hij
-- namen als Beth 2x laten zien omdat deze 2x
-- in de lijst staan.
--
use A88586KyleVanVelthoven;
select distinct Familienaam from Boeken;
-- hier zal de naam Beth twee keer getoond worden
select Familienaam from Boeken;

Met de distinct clausule selecteer je geen dubbele rijen. Wat zijn dubbele rijen? Dat hang er van af welke kolommen je selecteert. Als ik alleen de Familienaam kolom selecteer, heb ik twee rijen met Beth:

select Familienaam
   from Boeken
   order by Familienaam;

Door de distinct clausule toe te voegen wordt er slechts één rij met Beth getoond:

select distinct Familienaam
from Boeken
   order by Familienaam;

Als ik in mijn select opdracht ook de Titel kolom opneem heb ik geen twee gelijke rijen meer.

En zal het toevoegen van de distinct clausule geen verschil maken.

Opdracht

  1. Ik wil alle voornamen en namen van de schrijvers en geen dubbele. Voornaam en familienaam moeten verschillend zijn. De lijst staat in alfabetische volgorde, eerst Familienaam en dan Voornaam.
    Als je ORDER BY gebruikt moeten de kolommen in de order by clausule ook worden opgenomen na de DISTINCT clausule.
  2. k wil alle voornamen en namen van de schrijvers en geen dubbele die de letter a en/of e in hun familienaam hebben staan. De lijst staat in alfabetische volgorde, eerst Familienaam en dan Voornaam.
  3. Sla de scripts op in BoekenSelectDisctinctVoornaamFamilienaam.sql
  4. Tip:
    Als alle kolommen in alle rijen verschillend moeten zijn, kan je de ster gebruiken na de distinct clausule:
    select distinct * from Boeken order by Titel

JI
2018-03-25 18:10:07